#ifndef CUFFTDX_FFT_15_FP64_INV_PTX_HPP
#define CUFFTDX_FFT_15_FP64_INV_PTX_HPP



template<> __forceinline__ __device__ void cufftdx_private_function<577, double, 1>(cufftdx::detail::complex<double> *rmem, unsigned smem){

asm volatile (R"({
.reg .f64 fd<307>;
.reg .b64 rd<2>;
add.f64 fd61, %38, %62;
add.f64 fd62, %30, fd61;
add.f64 fd63, %46, %54;
add.f64 fd64, fd63, fd62;
add.f64 fd65, %39, %63;
add.f64 fd66, %31, fd65;
add.f64 fd67, %47, %55;
add.f64 fd68, fd67, fd66;
fma.rn.f64 fd69, fd61, 0d3FD3C6EF372FE950, %30;
mul.f64 fd70, fd63, 0d3FE9E3779B97F4A8;
sub.f64 fd71, fd69, fd70;
sub.f64 fd72, %39, %63;
mul.f64 fd73, fd72, 0d3FEE6F0E134454FF;
sub.f64 fd74, %47, %55;
fma.rn.f64 fd75, fd74, 0d3FE2CF2304755A5E, fd73;
sub.f64 fd76, fd71, fd75;
add.f64 fd77, fd75, fd71;
mul.f64 fd78, fd61, 0d3FE9E3779B97F4A8;
sub.f64 fd79, %30, fd78;
fma.rn.f64 fd80, fd63, 0d3FD3C6EF372FE950, fd79;
mul.f64 fd81, fd72, 0d3FE2CF2304755A5E;
mul.f64 fd82, fd74, 0d3FEE6F0E134454FF;
sub.f64 fd83, fd81, fd82;
sub.f64 fd84, fd80, fd83;
add.f64 fd85, fd83, fd80;
fma.rn.f64 fd86, fd65, 0d3FD3C6EF372FE950, %31;
mul.f64 fd87, fd67, 0d3FE9E3779B97F4A8;
sub.f64 fd88, fd86, fd87;
sub.f64 fd89, %38, %62;
mul.f64 fd90, fd89, 0d3FEE6F0E134454FF;
sub.f64 fd91, %46, %54;
fma.rn.f64 fd92, fd91, 0d3FE2CF2304755A5E, fd90;
add.f64 fd93, fd92, fd88;
sub.f64 fd94, fd88, fd92;
mul.f64 fd95, fd65, 0d3FE9E3779B97F4A8;
sub.f64 fd96, %31, fd95;
fma.rn.f64 fd97, fd67, 0d3FD3C6EF372FE950, fd96;
mul.f64 fd98, fd89, 0d3FE2CF2304755A5E;
mul.f64 fd99, fd91, 0d3FEE6F0E134454FF;
sub.f64 fd100, fd98, fd99;
add.f64 fd101, fd100, fd97;
sub.f64 fd102, fd97, fd100;
add.f64 fd103, %40, %64;
add.f64 fd104, %32, fd103;
add.f64 fd105, %48, %56;
add.f64 fd106, fd105, fd104;
add.f64 fd107, %42, %66;
add.f64 fd108, %34, fd107;
add.f64 fd109, %50, %58;
add.f64 fd110, fd109, fd108;
fma.rn.f64 fd111, fd103, 0d3FD3C6EF372FE950, %32;
mul.f64 fd112, fd105, 0d3FE9E3779B97F4A8;
sub.f64 fd113, fd111, fd112;
sub.f64 fd114, %42, %66;
mul.f64 fd115, fd114, 0d3FEE6F0E134454FF;
sub.f64 fd116, %50, %58;
fma.rn.f64 fd117, fd116, 0d3FE2CF2304755A5E, fd115;
sub.f64 fd118, fd113, fd117;
add.f64 fd119, fd117, fd113;
mul.f64 fd120, fd103, 0d3FE9E3779B97F4A8;
sub.f64 fd121, %32, fd120;
fma.rn.f64 fd122, fd105, 0d3FD3C6EF372FE950, fd121;
mul.f64 fd123, fd114, 0d3FE2CF2304755A5E;
mul.f64 fd124, fd116, 0d3FEE6F0E134454FF;
sub.f64 fd125, fd123, fd124;
sub.f64 fd126, fd122, fd125;
add.f64 fd127, fd125, fd122;
fma.rn.f64 fd128, fd107, 0d3FD3C6EF372FE950, %34;
mul.f64 fd129, fd109, 0d3FE9E3779B97F4A8;
sub.f64 fd130, fd128, fd129;
sub.f64 fd131, %40, %64;
mul.f64 fd132, fd131, 0d3FEE6F0E134454FF;
sub.f64 fd133, %48, %56;
fma.rn.f64 fd134, fd133, 0d3FE2CF2304755A5E, fd132;
add.f64 fd135, fd134, fd130;
sub.f64 fd136, fd130, fd134;
mul.f64 fd137, fd107, 0d3FE9E3779B97F4A8;
sub.f64 fd138, %34, fd137;
fma.rn.f64 fd139, fd109, 0d3FD3C6EF372FE950, fd138;
mul.f64 fd140, fd131, 0d3FE2CF2304755A5E;
mul.f64 fd141, fd133, 0d3FEE6F0E134454FF;
sub.f64 fd142, fd140, fd141;
add.f64 fd143, fd142, fd139;
sub.f64 fd144, fd139, fd142;
add.f64 fd145, %43, %67;
add.f64 fd146, %35, fd145;
add.f64 fd147, %51, %59;
add.f64 fd148, fd147, fd146;
add.f64 fd149, %45, %68;
add.f64 fd150, %37, fd149;
add.f64 fd151, %53, %61;
add.f64 fd152, fd151, fd150;
fma.rn.f64 fd153, fd145, 0d3FD3C6EF372FE950, %35;
mul.f64 fd154, fd147, 0d3FE9E3779B97F4A8;
sub.f64 fd155, fd153, fd154;
sub.f64 fd156, %45, %68;
mul.f64 fd157, fd156, 0d3FEE6F0E134454FF;
sub.f64 fd158, %53, %61;
fma.rn.f64 fd159, fd158, 0d3FE2CF2304755A5E, fd157;
sub.f64 fd160, fd155, fd159;
add.f64 fd161, fd159, fd155;
mul.f64 fd162, fd145, 0d3FE9E3779B97F4A8;
sub.f64 fd163, %35, fd162;
fma.rn.f64 fd164, fd147, 0d3FD3C6EF372FE950, fd163;
mul.f64 fd165, fd156, 0d3FE2CF2304755A5E;
mul.f64 fd166, fd158, 0d3FEE6F0E134454FF;
sub.f64 fd167, fd165, fd166;
sub.f64 fd168, fd164, fd167;
add.f64 fd169, fd167, fd164;
fma.rn.f64 fd170, fd149, 0d3FD3C6EF372FE950, %37;
mul.f64 fd171, fd151, 0d3FE9E3779B97F4A8;
sub.f64 fd172, fd170, fd171;
sub.f64 fd173, %43, %67;
mul.f64 fd174, fd173, 0d3FEE6F0E134454FF;
sub.f64 fd175, %51, %59;
fma.rn.f64 fd176, fd175, 0d3FE2CF2304755A5E, fd174;
add.f64 fd177, fd176, fd172;
sub.f64 fd178, fd172, fd176;
mul.f64 fd179, fd149, 0d3FE9E3779B97F4A8;
sub.f64 fd180, %37, fd179;
fma.rn.f64 fd181, fd151, 0d3FD3C6EF372FE950, fd180;
mul.f64 fd182, fd173, 0d3FE2CF2304755A5E;
mul.f64 fd183, fd175, 0d3FEE6F0E134454FF;
sub.f64 fd184, fd182, fd183;
add.f64 fd185, fd184, fd181;
sub.f64 fd186, fd181, fd184;
mul.f64 fd187, fd118, 0d3FED3BC3AEFF7F95;
mul.f64 fd188, fd135, 0d3FDA07F921061AD1;
sub.f64 fd189, fd187, fd188;
mul.f64 fd190, fd135, 0d3FED3BC3AEFF7F95;
fma.rn.f64 fd191, fd118, 0d3FDA07F921061AD1, fd190;
mul.f64 fd192, fd160, 0d3FE5698496E20BD8;
mul.f64 fd193, fd177, 0d3FE7C7D7A833BEC2;
sub.f64 fd194, fd192, fd193;
mul.f64 fd195, fd177, 0d3FE5698496E20BD8;
fma.rn.f64 fd196, fd160, 0d3FE7C7D7A833BEC2, fd195;
mul.f64 fd197, fd126, 0d3FE5698496E20BD8;
mul.f64 fd198, fd143, 0d3FE7C7D7A833BEC2;
sub.f64 fd199, fd197, fd198;
mul.f64 fd200, fd143, 0d3FE5698496E20BD8;
fma.rn.f64 fd201, fd126, 0d3FE7C7D7A833BEC2, fd200;
mul.f64 fd202, fd168, 0dBFBAC2609B3C576C;
mul.f64 fd203, fd185, 0d3FEFD31F94F867C6;
sub.f64 fd204, fd202, fd203;
mul.f64 fd205, fd185, 0dBFBAC2609B3C576C;
fma.rn.f64 fd206, fd168, 0d3FEFD31F94F867C6, fd205;
mul.f64 fd207, fd127, 0d3FD3C6EF372FE950;
mul.f64 fd208, fd144, 0d3FEE6F0E134454FF;
sub.f64 fd209, fd207, fd208;
mul.f64 fd210, fd144, 0d3FD3C6EF372FE950;
fma.rn.f64 fd211, fd127, 0d3FEE6F0E134454FF, fd210;
mul.f64 fd212, fd169, 0dBFE9E3779B97F4A8;
mul.f64 fd213, fd186, 0d3FE2CF2304755A5E;
sub.f64 fd214, fd212, fd213;
mul.f64 fd215, fd186, 0dBFE9E3779B97F4A8;
fma.rn.f64 fd216, fd169, 0d3FE2CF2304755A5E, fd215;
mul.f64 fd217, fd119, 0dBFBAC2609B3C576C;
mul.f64 fd218, fd136, 0d3FEFD31F94F867C6;
sub.f64 fd219, fd217, fd218;
mul.f64 fd220, fd136, 0dBFBAC2609B3C576C;
fma.rn.f64 fd221, fd119, 0d3FEFD31F94F867C6, fd220;
mul.f64 fd222, fd161, 0dBFEF4CFC327A0080;
mul.f64 fd223, fd178, 0dBFCA9CD9AC4258F6;
sub.f64 fd224, fd222, fd223;
mul.f64 fd225, fd178, 0dBFEF4CFC327A0080;
fma.rn.f64 fd226, fd161, 0dBFCA9CD9AC4258F6, fd225;
add.f64 fd227, fd106, fd148;
add.f64 fd228, fd110, fd152;
mul.f64 fd229, fd227, 0d3FE0000000000000;
sub.f64 fd230, fd64, fd229;
sub.f64 fd231, fd110, fd152;
mul.f64 fd232, fd231, 0dBFEBB67AE8584CAA;
mul.f64 fd233, fd228, 0d3FE0000000000000;
sub.f64 fd234, fd68, fd233;
sub.f64 fd235, fd106, fd148;
mul.f64 fd236, fd235, 0dBFEBB67AE8584CAA;
add.f64 fd237, fd189, fd194;
add.f64 fd238, fd191, fd196;
mul.f64 fd239, fd237, 0d3FE0000000000000;
sub.f64 fd240, fd76, fd239;
sub.f64 fd241, fd191, fd196;
mul.f64 fd242, fd241, 0dBFEBB67AE8584CAA;
mul.f64 fd243, fd238, 0d3FE0000000000000;
sub.f64 fd244, fd93, fd243;
sub.f64 fd245, fd189, fd194;
mul.f64 fd246, fd245, 0dBFEBB67AE8584CAA;
add.f64 fd247, fd199, fd204;
add.f64 fd248, fd201, fd206;
mul.f64 fd249, fd247, 0d3FE0000000000000;
sub.f64 fd250, fd84, fd249;
sub.f64 fd251, fd201, fd206;
mul.f64 fd252, fd251, 0dBFEBB67AE8584CAA;
mul.f64 fd253, fd248, 0d3FE0000000000000;
sub.f64 fd254, fd101, fd253;
sub.f64 fd255, fd199, fd204;
mul.f64 fd256, fd255, 0dBFEBB67AE8584CAA;
add.f64 fd257, fd209, fd214;
add.f64 fd258, fd211, fd216;
mul.f64 fd259, fd257, 0d3FE0000000000000;
sub.f64 fd260, fd85, fd259;
sub.f64 fd261, fd211, fd216;
mul.f64 fd262, fd261, 0dBFEBB67AE8584CAA;
mul.f64 fd263, fd258, 0d3FE0000000000000;
sub.f64 fd264, fd102, fd263;
sub.f64 fd265, fd209, fd214;
mul.f64 fd266, fd265, 0dBFEBB67AE8584CAA;
add.f64 fd267, fd219, fd224;
add.f64 fd268, fd221, fd226;
mul.f64 fd269, fd267, 0d3FE0000000000000;
sub.f64 fd270, fd77, fd269;
sub.f64 fd271, fd221, fd226;
mul.f64 fd272, fd271, 0dBFEBB67AE8584CAA;
mul.f64 fd273, fd268, 0d3FE0000000000000;
sub.f64 fd274, fd94, fd273;
sub.f64 fd275, fd219, fd224;
mul.f64 fd276, fd275, 0dBFEBB67AE8584CAA;
add.f64 %1, fd68, fd228;
add.f64 %0, fd64, fd227;
add.f64 %3, fd93, fd238;
add.f64 %2, fd76, fd237;
add.f64 %5, fd101, fd248;
add.f64 %4, fd84, fd247;
add.f64 %7, fd102, fd258;
add.f64 %6, fd85, fd257;
add.f64 %9, fd94, fd268;
add.f64 %8, fd77, fd267;
sub.f64 %11, fd234, fd236;
add.f64 %10, fd232, fd230;
sub.f64 %13, fd244, fd246;
add.f64 %12, fd242, fd240;
sub.f64 %15, fd254, fd256;
add.f64 %14, fd252, fd250;
sub.f64 %17, fd264, fd266;
add.f64 %16, fd262, fd260;
sub.f64 %19, fd274, fd276;
add.f64 %18, fd272, fd270;
add.f64 %21, fd236, fd234;
sub.f64 %20, fd230, fd232;
add.f64 %23, fd246, fd244;
sub.f64 %22, fd240, fd242;
add.f64 %25, fd256, fd254;
sub.f64 %24, fd250, fd252;
add.f64 %27, fd266, fd264;
sub.f64 %26, fd260, fd262;
add.f64 %29, fd276, fd274;
sub.f64 %28, fd270, fd272;
})"
     : "=d"(rmem[0].x), "=d"(rmem[0].y), "=d"(rmem[1].x), "=d"(rmem[1].y), "=d"(rmem[2].x), "=d"(rmem[2].y), "=d"(rmem[3].x), "=d"(rmem[3].y), "=d"(rmem[4].x), "=d"(rmem[4].y), "=d"(rmem[5].x), "=d"(rmem[5].y), "=d"(rmem[6].x), "=d"(rmem[6].y), "=d"(rmem[7].x), "=d"(rmem[7].y), "=d"(rmem[8].x), "=d"(rmem[8].y), "=d"(rmem[9].x), "=d"(rmem[9].y), "=d"(rmem[10].x), "=d"(rmem[10].y), "=d"(rmem[11].x), "=d"(rmem[11].y), "=d"(rmem[12].x), "=d"(rmem[12].y), "=d"(rmem[13].x), "=d"(rmem[13].y), "=d"(rmem[14].x), "=d"(rmem[14].y): "d"(rmem[0].x), "d"(rmem[0].y), "d"(rmem[1].x), "d"(rmem[1].y), "d"(rmem[1].y), "d"(rmem[2].x), "d"(rmem[2].y), "d"(rmem[2].y), "d"(rmem[3].x), "d"(rmem[3].y), "d"(rmem[4].x), "d"(rmem[4].y), "d"(rmem[4].y), "d"(rmem[5].x), "d"(rmem[5].y), "d"(rmem[5].y), "d"(rmem[6].x), "d"(rmem[6].y), "d"(rmem[7].x), "d"(rmem[7].y), "d"(rmem[7].y), "d"(rmem[8].x), "d"(rmem[8].y), "d"(rmem[8].y), "d"(rmem[9].x), "d"(rmem[9].y), "d"(rmem[10].x), "d"(rmem[10].y), "d"(rmem[10].y), "d"(rmem[11].x), "d"(rmem[11].y), "d"(rmem[11].y), "d"(rmem[12].x), "d"(rmem[12].y), "d"(rmem[13].x), "d"(rmem[13].y), "d"(rmem[13].y), "d"(rmem[14].x), "d"(rmem[14].y));
};


#endif
